Introduction
Sleep is a natural phenomenon that is ubiquitous for mammals; regardless of species, sleep is a fundamental aspect of mammalian physiology. For humans, sleep specialists recommend that adults get around 7 to 9 hours of sleep per day, which means that on average we spend about ⅓ of our lives sleeping. 
Numerous studies have shown that this need for sleep is tied to a myriad of physical and mental health benefits, including boosting immunity, improving memory and learning functions, and even enhancing mental and emotional resilience to problems. Scientists posit that other mammals need sleep for similar reasons, finding that sleep-deprived animals will lose weight despite food intake, and have issues regulating their body temperature, resulting in their death.
However, despite these undeniable health benefits, sleep also poses considerable risks to the survival of mammals. In a study conducted by Truett Allison and Domenic V. Cicchetti, they explore the “interrelationships between sleep, ecological, and constitutional variables” for 40 mammalian species, including humans.
| Species |
Body Weight |
Brain Weight |
Slow Wave Sleep |
Paradoxical Sleep |
Total Sleep |
Maximum Life Span (yrs) |
| Asian elephant |
2547.000 |
4603.00 |
2.1 |
1.8 |
3.9 |
69.0 |
| Horse |
521.000 |
655.00 |
2.1 |
0.8 |
2.9 |
46.0 |
| Cow |
465.000 |
423.00 |
3.2 |
0.7 |
3.9 |
30.0 |
| Pig |
192.000 |
180.00 |
6.5 |
1.9 |
8.4 |
27.0 |
| Brazilian tapir |
160.000 |
169.00 |
5.2 |
1.0 |
6.2 |
30.4 |
| Gray seal |
85.000 |
325.00 |
4.7 |
1.5 |
6.2 |
41.0 |
| Human |
62.000 |
1320.00 |
6.1 |
1.9 |
8.0 |
100.0 |
| Sheep |
55.500 |
175.00 |
3.2 |
0.6 |
3.8 |
20.0 |
| Chimpanzee |
52.160 |
440.00 |
8.3 |
1.4 |
9.7 |
50.0 |
| Goat |
27.660 |
115.00 |
3.3 |
0.5 |
3.8 |
20.0 |
| Baboon |
10.550 |
179.50 |
9.1 |
0.7 |
9.8 |
27.0 |
| Patas monkey |
10.000 |
115.00 |
10.0 |
0.9 |
10.9 |
20.2 |
| Rhesus monkey |
6.800 |
179.00 |
8.4 |
1.2 |
9.6 |
29.0 |
| Red fox |
4.235 |
50.40 |
7.4 |
2.4 |
9.8 |
9.8 |
| Vervet |
4.190 |
58.00 |
9.7 |
0.6 |
10.3 |
24.0 |
| Nine-banded armadillo |
3.500 |
10.80 |
14.3 |
3.1 |
17.4 |
6.5 |
| Water opossum |
3.500 |
3.90 |
12.8 |
6.6 |
19.4 |
3.0 |
| Cat |
3.300 |
25.60 |
10.9 |
3.6 |
14.5 |
28.0 |
| Echidna |
3.000 |
25.00 |
8.6 |
0.0 |
8.6 |
50.0 |
| Rabbit |
2.500 |
12.10 |
7.5 |
0.9 |
8.4 |
18.0 |
| Tree hyrax |
2.000 |
12.30 |
4.9 |
0.5 |
5.4 |
7.5 |
| N. American opossum |
1.700 |
6.30 |
13.8 |
5.6 |
19.4 |
5.0 |
| Phanlanger |
1.620 |
11.40 |
11.9 |
1.8 |
13.7 |
13.0 |
| Guinea pig |
1.040 |
5.50 |
7.4 |
0.8 |
8.2 |
7.6 |
| African giant pouched rat |
1.000 |
6.60 |
6.3 |
2.0 |
8.3 |
4.5 |
| Tenrec |
0.900 |
2.60 |
11.0 |
2.3 |
13.3 |
4.5 |
| European hedgehog |
0.785 |
3.50 |
6.6 |
4.1 |
10.7 |
6.0 |
| Owl monkey |
0.480 |
15.50 |
15.2 |
1.8 |
17.0 |
12.0 |
| Chinchilla |
0.425 |
6.40 |
11.0 |
1.5 |
12.5 |
7.0 |
| Rat |
0.280 |
1.90 |
10.6 |
2.6 |
13.2 |
4.7 |
| Galago |
0.200 |
5.00 |
9.5 |
1.2 |
10.7 |
10.4 |
| Golden hamster |
0.120 |
1.00 |
11.0 |
3.4 |
14.4 |
3.9 |
| Tree shrew |
0.104 |
2.50 |
13.2 |
2.6 |
15.8 |
2.3 |
| Ground squirrel |
0.101 |
4.00 |
10.4 |
3.4 |
13.8 |
9.0 |
| Eastern American mole |
0.075 |
1.20 |
6.3 |
2.1 |
8.4 |
3.5 |
| Musk shrew |
0.048 |
0.33 |
10.8 |
2.0 |
12.8 |
2.0 |
| Big brown bat |
0.023 |
0.30 |
15.8 |
3.9 |
19.7 |
19.0 |
| Mouse |
0.023 |
0.40 |
11.9 |
1.3 |
13.2 |
3.2 |
| Little brown bat |
0.010 |
0.25 |
17.9 |
2.0 |
19.9 |
24.0 |
| Lesser short-tailed shrew |
0.005 |
0.14 |
7.7 |
1.4 |
9.1 |
2.6 |
Their research finds that slow-wave and paradoxical sleep in mammals are tied to physical characteristics such as body size and brain size, and environmental conditions. Moreover, their research produced an overall danger index for each animal, which was calculated as a combination of the predation index, or the likelihood an animal is to be preyed upon, and the sleep exposure index, or the how exposed an animal’s habitat is while they sleep.

Slow-Wave vs. Paradoxical Sleep
Slow-wave sleep involves the stages of non-dreaming sleep and is typically described as “deep sleep” while paradoxical sleep is the REM part of the sleep cycle, and is characterized by dreaming sleep.Together, these contribute to the total hours of sleep in mammals.

Allison and Cichetti find that type of sleep is related in different ways to the survival of mammals. For example, slow wave sleep is negatively associated with the body size of mammals, which implies that longer slow wave sleep cycles can be more dangerous for larger animals. However, paradoxical sleep is associated with a higher predation index, which means that large amounts of this sleep cycle can be risky for prey species.

Ultimately, their findings outline the dimensions of survival while mammals sleep, highlighting the various factors that endanger animals in moments of rest, and how their physical and physiological conditions respond to these dangers.
LS0tDQp0aXRsZTogIk1hbW1hbCBTbGVlcCBCZWhhdmlvciINCmF1dGhvcjogIkpvc2VseW4gQW5nZWxlcyBhbmQgUGlwcGEgR2FsbGFnaGVyIg0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0aGVtZTogeWV0aQ0KICAgIGRmX3ByaW50OiBwYWdlZA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQoNCg0KYGBge3IsIGVjaG89RkFMU0UsIGluY2x1ZGU9RkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZ3QpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkocGF0Y2h3b3JrKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShodG1sdG9vbHMpDQpsaWJyYXJ5KGZsZXhkYXNoYm9hcmQpDQpzbGVlcDwtcmVhZC5jc3YoIlNsZWVwSW5NYW1tYWxzLmNzdiIpDQpgYGANCg0KKipJbnRyb2R1Y3Rpb24qKg0KDQpTbGVlcCBpcyBhIG5hdHVyYWwgcGhlbm9tZW5vbiB0aGF0IGlzIHViaXF1aXRvdXMgZm9yIG1hbW1hbHM7IHJlZ2FyZGxlc3Mgb2Ygc3BlY2llcywgc2xlZXAgaXMgYSBmdW5kYW1lbnRhbCBhc3BlY3Qgb2YgbWFtbWFsaWFuIHBoeXNpb2xvZ3kuIEZvciBodW1hbnMsIHNsZWVwIHNwZWNpYWxpc3RzIHJlY29tbWVuZCB0aGF0IGFkdWx0cyBnZXQgYXJvdW5kIDcgdG8gOSBob3VycyBvZiBzbGVlcCBwZXIgZGF5XltPbHNvbiwgRXJpYy4g4oCcSG93IE1hbnkgSG91cnMgb2YgU2xlZXAgRG8gWW91IE5lZWQ/4oCdIE1heW8gQ2xpbmljLCBNYXlvIEZvdW5kYXRpb24gZm9yIE1lZGljYWwgRWR1Y2F0aW9uIGFuZCBSZXNlYXJjaCwgNiBKdW5lIDIwMTksIHd3dy5tYXlvY2xpbmljLm9yZy9oZWFsdGh5LWxpZmVzdHlsZS9hZHVsdC1oZWFsdGgvZXhwZXJ0LWFuc3dlcnMvaG93LW1hbnktaG91cnMtb2Ytc2xlZXAtYXJlLWVub3VnaC9mYXEtMjAwNTc4OTguXSwgd2hpY2ggbWVhbnMgdGhhdCBvbiBhdmVyYWdlIHdlIHNwZW5kIGFib3V0IOKFkyBvZiBvdXIgbGl2ZXMgc2xlZXBpbmcuIA0KYGBge3IsIGVjaG89RkFMU0V9DQpHNCA8LQ0KICBzbGVlcCAlPiUgDQogICBmaWx0ZXIoU3BlY2llcy5vZi5hbmltYWwgJWluJSBjKCJIb3JzZSIsICJDb3ciLCAiUGlnIiwgIkh1bWFuIiwgIlNoZWVwIiwgIkNoaW1wYW56ZWUiLCAiR29hdCIsICJCYWJvb24iLCAiUmVkIGZveCIsICJDYXQiLCAiUmFiYml0IiwgIlJhdCIsICJHcm91bmQgc3F1aXJyZWwiLCAiTW91c2UiKSkgJT4lIA0KICBtdXRhdGUoVG90YWxfaG91cnNfc2xlZXBpbmdfbGlmZSA9IFRvdGFsLnNsZWVwLi5ocnMuZGF5LiAqIChNYXhpbXVtLmxpZmUuc3Bhbi4ueWVhcnMuICogMzY1KSwNCiAgICAgICAgIFRvdGFsX2hvdXJzX2FsaXZlID0gTWF4aW11bS5saWZlLnNwYW4uLnllYXJzLiAqIDM2NSAqIDI0LA0KICAgICAgICAgUHJvcF9zcGVudF9zbGVlcGluZyA9IChUb3RhbF9ob3Vyc19zbGVlcGluZ19saWZlL1RvdGFsX2hvdXJzX2FsaXZlKSAqMTAwKSAlPiUgDQogICBnZ3Bsb3QoKSArDQogIGdlb21fY29sKGFlcyh5ID0gUHJvcF9zcGVudF9zbGVlcGluZywgDQogICAgICAgICAgICAgICB4ID0gZmN0X3Jlb3JkZXIoU3BlY2llcy5vZi5hbmltYWwsUHJvcF9zcGVudF9zbGVlcGluZyxtZWRpYW4pLA0KICAgICAgICAgICAgICBmaWxsID0gTWF4aW11bS5saWZlLnNwYW4uLnllYXJzLikpICsNCiAgZ2VvbV90ZXh0KGFlcyh5ID0gUHJvcF9zcGVudF9zbGVlcGluZyArIDIwLCB4PWZjdF9yZW9yZGVyKFNwZWNpZXMub2YuYW5pbWFsLFByb3Bfc3BlbnRfc2xlZXBpbmcsbWVkaWFuKSwgbGFiZWw9IFNwZWNpZXMub2YuYW5pbWFsKSwgY29sb3I9IndoaXRlIiwgZm9udGZhY2U9ImJvbGQiLGFscGhhPTAuNiwgc2l6ZT0yLjUsIGluaGVyaXQuYWVzID0gRkFMU0UgKSArDQogIGNvb3JkX3BvbGFyKHN0YXJ0ID0gMCkgKw0KICB5bGltKC01LDkwKSArDQogICB0aGVtZSgNCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpLA0KICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiMwYTIwM2IiKSwNCiAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiIzBhMjAzYiIpLA0KICAgIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiIzBhMjAzYiIpLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiKSwNCiAgICBwbG90LnRpdGxlLnBvc2l0aW9uID0gInBsb3QiLA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIndoaXRlIiksDQogICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIndoaXRlIiksDQogICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiKSwNCiAgICBwbG90LmNhcHRpb24ucG9zaXRpb24gPSAicGxvdCIsDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIsIHNpemUgPSA3KSkgKw0KICBzY2FsZV9maWxsX2dyYWRpZW50KGhpZ2ggPSAiIzI0NzNkYiIsIGxvdyA9ICIjYzNkZWZmIikgKw0KICBsYWJzKHRpdGxlID0gIlByb3BvcnRpb24gb2YgTWFtbWFscycgTGl2ZXMgU3BlbnQgU2xlZXBpbmciLA0KICAgICAgIHggPSAiIiwNCiAgICAgICB5ID0gIiIsDQogICAgICAgY2FwdGlvbiA9ICJQaXBwYSBHYWxsYWdoZXIgYW5kIEpvc2VseW4gQW5nZWxlcyIsDQogICAgICAgZmlsbCA9ICJNYXhpbXVtIExpZmUgU3BhbiIpDQogIA0KRzQgDQpgYGANCg0KIE51bWVyb3VzIHN0dWRpZXMgaGF2ZSBzaG93biB0aGF0IHRoaXMgbmVlZCBmb3Igc2xlZXAgaXMgdGllZCB0byBhIG15cmlhZCBvZiBwaHlzaWNhbCBhbmQgbWVudGFsIGhlYWx0aCBiZW5lZml0cywgaW5jbHVkaW5nIGJvb3N0aW5nIGltbXVuaXR5LCBpbXByb3ZpbmcgbWVtb3J5IGFuZCBsZWFybmluZyBmdW5jdGlvbnNeW+KAnEJlbmVmaXRzIG9mIFNsZWVwLuKAnSBCZW5lZml0cyBvZiBTbGVlcCB8IEhlYWx0aHkgU2xlZXAsIGhlYWx0aHlzbGVlcC5tZWQuaGFydmFyZC5lZHUvaGVhbHRoeS9tYXR0ZXJzL2JlbmVmaXRzLW9mLXNsZWVwLiBdLCBhbmQgZXZlbiBlbmhhbmNpbmcgbWVudGFsIGFuZCBlbW90aW9uYWwgcmVzaWxpZW5jZSB0byBwcm9ibGVtc15bUHVibGlzaGluZywgSGFydmFyZCBIZWFsdGguIOKAnFNsZWVwIGFuZCBNZW50YWwgSGVhbHRoLuKAnSBIYXJ2YXJkIEhlYWx0aCwgd3d3LmhlYWx0aC5oYXJ2YXJkLmVkdS9uZXdzbGV0dGVyX2FydGljbGUvc2xlZXAtYW5kLW1lbnRhbC1oZWFsdGguXS4gU2NpZW50aXN0cyBwb3NpdCB0aGF0IG90aGVyIG1hbW1hbHMgbmVlZCBzbGVlcCBmb3Igc2ltaWxhciByZWFzb25zLCBmaW5kaW5nIHRoYXQgc2xlZXAtZGVwcml2ZWQgYW5pbWFscyB3aWxsIGxvc2Ugd2VpZ2h0IGRlc3BpdGUgZm9vZCBpbnRha2UsIGFuZCBoYXZlIGlzc3VlcyByZWd1bGF0aW5nIHRoZWlyIGJvZHkgdGVtcGVyYXR1cmUsIHJlc3VsdGluZyBpbiB0aGVpciBkZWF0aF5bUHVydmVzLCBEYWxlLiDigJxXaHkgRG8gSHVtYW5zIGFuZCBNYW55IE90aGVyIEFuaW1hbHMgU2xlZXA/4oCdIE5ldXJvc2NpZW5jZS4gMm5kIEVkaXRpb24uLCBVLlMuIE5hdGlvbmFsIExpYnJhcnkgb2YgTWVkaWNpbmUsIDEgSmFuLiAxOTcwLCB3d3cubmNiaS5ubG0ubmloLmdvdi9ib29rcy9OQksxMTEwOC8uXS4NCg0KSG93ZXZlciwgZGVzcGl0ZSB0aGVzZSB1bmRlbmlhYmxlIGhlYWx0aCBiZW5lZml0cywgc2xlZXAgYWxzbyBwb3NlcyBjb25zaWRlcmFibGUgcmlza3MgdG8gdGhlIHN1cnZpdmFsIG9mIG1hbW1hbHMuIEluIGEgc3R1ZHkgY29uZHVjdGVkIGJ5IFRydWV0dCBBbGxpc29uIGFuZCBEb21lbmljIFYuIENpY2NoZXR0aSwgdGhleSBleHBsb3JlIHRoZSDigJxpbnRlcnJlbGF0aW9uc2hpcHMgYmV0d2VlbiBzbGVlcCwgZWNvbG9naWNhbCwgYW5kIGNvbnN0aXR1dGlvbmFsIHZhcmlhYmxlc+KAnSBmb3IgNDAgbWFtbWFsaWFuIHNwZWNpZXMsIGluY2x1ZGluZyBodW1hbnNeW0FsbGlzb24sIFQgJiBDaWNjaGV0dGksIERvbWVuaWMuICgxOTc2KS4gU2xlZXAgaW4gTWFtbWFscyDigJMgRWNvbG9naWNhbCBhbmQgQ29uc3RpdHV0aW9uYWwgQ29ycmVsYXRlcy4gU2NpZW5jZSAoTmV3IFlvcmssIE4uWS4pLiAxOTQuIDczMi00LiAxMC4xMTI2L3NjaWVuY2UuOTgyMDM5Ll0uIA0KDQoNCg0KYGBge3IsIGVjaG89RkFMU0V9DQoNCnNsZWVwX3RhYmRhdGE8LXNsZWVwICU+JSANCiAgc2VsZWN0KCFHZXN0YXRpb24udGltZS4uZGF5cy46T3ZlcmFsbC5kYW5nZXIuaW5kZXgpICU+JSANCiAgYXJyYW5nZShkZXNjKEJvZHkuV2VpZ2h0Li5rZy4pKQ0KDQoNCg0KZ3Qoc2xlZXBfdGFiZGF0YSwgcm93bmFtZV9jb2wgPSAicm93IiwNCiAgIGdyb3VwbmFtZV9jb2wgPSAiZ3JvdXAiKSAlPiUgDQogIHRhYl9vcHRpb25zKGNvbnRhaW5lci5oZWlnaHQgPSA0NTAsDQogICAgICAgICAgICAgIGNvbnRhaW5lci5vdmVyZmxvdy55ID0gVFJVRSkgJT4lIA0KICB0YWJfaGVhZGVyKA0KICAgIHRpdGxlID0gbWQoIioqU2xlZXAgUGF0dGVybnMgaW4gTWFtbWFscyoqIikpICU+JSANCiAgdGFiX2Zvb3Rub3RlKA0KICAgIGZvb3Rub3RlID0gIldlaWdodCBpbiBraWxvZ3JhbXMiLCANCiAgICBsb2NhdGlvbnMgPSBjZWxsc19jb2x1bW5fbGFiZWxzKA0KICAgICAgY29sdW1ucyA9IDIpKSAlPiUgDQogIHRhYl9mb290bm90ZSgNCiAgICBmb290bm90ZSA9ICJXZWlnaHQgaW4gZ3JhbXMiLA0KICAgIGxvY2F0aW9ucyA9IGNlbGxzX2NvbHVtbl9sYWJlbHMoDQogICAgICBjb2x1bW5zID0gMykpICU+JQ0KICB0YWJfZm9vdG5vdGUoDQogICAgZm9vdG5vdGUgPSAiTm9uLWRyZWFtaW5nIGhvdXJzIHBlciBkYXkiLA0KICAgIGxvY2F0aW9ucyA9IGNlbGxzX2NvbHVtbl9sYWJlbHMoDQogICAgICBjb2x1bW5zID0gNCkpICU+JQ0KICB0YWJfZm9vdG5vdGUoDQogICAgZm9vdG5vdGUgPSAiRHJlYW1pbmcgaG91cnMgcGVyIGRheSIsDQogICAgbG9jYXRpb25zID0gY2VsbHNfY29sdW1uX2xhYmVscygNCiAgICAgIGNvbHVtbnMgPSA1KSkgJT4lIA0KICBjb2xzX2xhYmVsKA0KICAgIFNwZWNpZXMub2YuYW5pbWFsPSJTcGVjaWVzIiwNCiAgICBCb2R5LldlaWdodC4ua2cuPSJCb2R5IFdlaWdodCIsDQogICAgQnJhaW4uV2VpZ2h0Li5nLiA9IkJyYWluIFdlaWdodCIsDQogICAgU2xvdy53YXZlLnNsZWVwLi5ocnMuZGF5LiA9ICJTbG93IFdhdmUgU2xlZXAiLA0KICAgIFBhcmFkb3hpY2FsLnNsZWVwLi5ocnMuZGF5LiA9ICJQYXJhZG94aWNhbCBTbGVlcCIsDQogICAgVG90YWwuc2xlZXAuLmhycy5kYXkuCT0gIlRvdGFsIFNsZWVwIiwNCiAgICBNYXhpbXVtLmxpZmUuc3Bhbi4ueWVhcnMuID0iTWF4aW11bSBMaWZlIFNwYW4gKHlycykiKQ0KYGBgDQoNClRoZWlyIHJlc2VhcmNoIGZpbmRzIHRoYXQgc2xvdy13YXZlIGFuZCBwYXJhZG94aWNhbCBzbGVlcCBpbiBtYW1tYWxzIGFyZSB0aWVkIHRvIHBoeXNpY2FsIGNoYXJhY3RlcmlzdGljcyBzdWNoIGFzIGJvZHkgc2l6ZSBhbmQgYnJhaW4gc2l6ZSwgYW5kIGVudmlyb25tZW50YWwgY29uZGl0aW9ucy4gTW9yZW92ZXIsIHRoZWlyIHJlc2VhcmNoIHByb2R1Y2VkIGFuIG92ZXJhbGwgZGFuZ2VyIGluZGV4IGZvciBlYWNoIGFuaW1hbCwgd2hpY2ggd2FzIGNhbGN1bGF0ZWQgYXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgcHJlZGF0aW9uIGluZGV4LCBvciB0aGUgbGlrZWxpaG9vZCBhbiBhbmltYWwgaXMgdG8gYmUgcHJleWVkIHVwb24sIGFuZCB0aGUgc2xlZXAgZXhwb3N1cmUgaW5kZXgsIG9yIHRoZSBob3cgZXhwb3NlZCBhbiBhbmltYWzigJlzIGhhYml0YXQgaXMgd2hpbGUgdGhleSBzbGVlcC4gDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KcHJlZGdyYXBoPC1zbGVlcCAlPiUgDQogIGdncGxvdChhZXMoeD1QcmVkYXRpb24uaW5kZXgsIA0KICAgICAgICAgICAgIHk9ZmN0X3Jlb3JkZXIoU3BlY2llcy5vZi5hbmltYWwsIFByZWRhdGlvbi5pbmRleCksDQogICAgICAgICAgICAgZmlsbD1QcmVkYXRpb24uaW5kZXgpLA0KICAgICAgICAgY29sb3I9IndoaXRlIikgKw0KICBnZW9tX2NvbCgpICsNCiAgbGFicyh0aXRsZT0gIlByZWRhdGlvbiBJbmRleCBieSBTcGVjaWVzIiwNCiAgICAgICB5PSIiLA0KICAgICAgIHg9IiIsDQogICAgICAgZmlsbD0gIlByZWRhdGlvbiBJbmRleCIpKw0KICB0aGVtZV9taW5pbWFsKCkrDQogIHRoZW1lKHBsb3QudGl0bGUucG9zaXRpb24gPSAicGxvdCIsIA0KICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsNCiAgc2NhbGVfZmlsbF9ncmFkaWVudChoaWdoPSJyZWQiLCBsb3c9ImJsdWUiKQ0KDQpleHBncmFwaDwtc2xlZXAgJT4lIA0KICBnZ3Bsb3QoYWVzKHg9U2xlZXAuZXhwb3N1cmUuaW5kZXgsDQogICAgICAgICAgICAgeT0gZmN0X3Jlb3JkZXIoU3BlY2llcy5vZi5hbmltYWwsIFNsZWVwLmV4cG9zdXJlLmluZGV4KSwNCiAgICAgICAgICAgICBmaWxsPVNsZWVwLmV4cG9zdXJlLmluZGV4KSwNCiAgICAgICAgIGNvbG9yPSJ3aGl0ZSIpICsgDQogIGdlb21fY29sKCkrDQogIGxhYnModGl0bGU9ICJTbGVlcCBFeHBvc3VyZSBJbmRleCBieSBTcGVjaWVzIiwNCiAgICAgICB5PSIiLA0KICAgICAgIHg9IiIsDQogICAgICAgZmlsbD0gIlNsZWVwIEV4cG9zdXJlIEluZGV4IikrDQogIHRoZW1lX21pbmltYWwoKSsNCiAgdGhlbWUocGxvdC50aXRsZS5wb3NpdGlvbiA9ICJwbG90IiwgDQogICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKw0KICBzY2FsZV9maWxsX2dyYWRpZW50KGhpZ2g9InJlZCIsIGxvdz0iYmx1ZSIpDQoNCm92ZXJhbGw8LXNsZWVwICU+JSANCiAgZ2dwbG90KGFlcyh4PU92ZXJhbGwuZGFuZ2VyLmluZGV4LA0KICAgICAgICAgICAgIHk9IGZjdF9yZW9yZGVyKFNwZWNpZXMub2YuYW5pbWFsLCBPdmVyYWxsLmRhbmdlci5pbmRleCksDQogICAgICAgICAgICAgZmlsbD1PdmVyYWxsLmRhbmdlci5pbmRleCksDQogICAgICAgICBjb2xvcj0id2hpdGUiKSArIA0KICBnZW9tX2NvbCgpKw0KICBsYWJzKHRpdGxlPSAiT3ZlcmFsbCBEYW5nZXIgSW5kZXggYnkgU3BlY2llcyIsDQogICAgICAgeT0iIiwNCiAgICAgICB4PSIiLA0KICAgICAgIGZpbGw9ICJPdmVyYWxsIERhbmdlciBJbmRleCIpKw0KICB0aGVtZV9taW5pbWFsKCkrDQogIHRoZW1lKHBsb3QudGl0bGUucG9zaXRpb24gPSAicGxvdCIsIA0KICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpKSArDQogIHNjYWxlX2ZpbGxfZ3JhZGllbnQoaGlnaD0icmVkIiwgbG93PSJibHVlIikNCg0KKHByZWRncmFwaCB8IGV4cGdyYXBoKQ0KYGBgDQpgYGB7ciwgZWNobz1GQUxTRX0NCnNsZWVwICU+JSANCiAgZ2dwbG90KGFlcyh4PU92ZXJhbGwuZGFuZ2VyLmluZGV4LA0KICAgICAgICAgICAgIHk9IGZjdF9yZW9yZGVyKFNwZWNpZXMub2YuYW5pbWFsLCBPdmVyYWxsLmRhbmdlci5pbmRleCksDQogICAgICAgICAgICAgZmlsbD1PdmVyYWxsLmRhbmdlci5pbmRleCksDQogICAgICAgICBjb2xvcj0id2hpdGUiKSArIA0KICBnZW9tX2NvbCgpKw0KICBsYWJzKHRpdGxlPSAiT3ZlcmFsbCBEYW5nZXIgSW5kZXggYnkgU3BlY2llcyIsDQogICAgICAgeT0iIiwNCiAgICAgICB4PSIiLA0KICAgICAgIGZpbGw9ICJPdmVyYWxsIERhbmdlciBJbmRleCIpKw0KICB0aGVtZV9taW5pbWFsKCkrDQogIHRoZW1lKHBsb3QudGl0bGUucG9zaXRpb24gPSAicGxvdCIsIA0KICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpKSArDQogIHNjYWxlX2ZpbGxfZ3JhZGllbnQoaGlnaD0icmVkIiwgbG93PSJibHVlIikNCmBgYA0KDQoNCioqU2xvdy1XYXZlIHZzLiBQYXJhZG94aWNhbCBTbGVlcCoqDQoNClNsb3ctd2F2ZSBzbGVlcCBpbnZvbHZlcyB0aGUgc3RhZ2VzIG9mIG5vbi1kcmVhbWluZyBzbGVlcCBhbmQgaXMgdHlwaWNhbGx5IGRlc2NyaWJlZCBhcyDigJxkZWVwIHNsZWVw4oCdXltSb3RoLCBUaG9tYXMuIOKAnFNsb3cgV2F2ZSBTbGVlcDogRG9lcyBJdCBNYXR0ZXI/4oCdIEpvdXJuYWwgb2YgQ2xpbmljYWwgU2xlZXAgTWVkaWNpbmUgOiBKQ1NNIDogT2ZmaWNpYWwgUHVibGljYXRpb24gb2YgdGhlIEFtZXJpY2FuIEFjYWRlbXkgb2YgU2xlZXAgTWVkaWNpbmUsIEFtZXJpY2FuIEFjYWRlbXkgb2YgU2xlZXAgTWVkaWNpbmUsIDE1IEFwci4gMjAwOSwgd3d3Lm5jYmkubmxtLm5paC5nb3YvcG1jL2FydGljbGVzL1BNQzI4MjQyMTAvLl0gd2hpbGUgcGFyYWRveGljYWwgc2xlZXAgaXMgdGhlIFJFTSBwYXJ0IG9mIHRoZSBzbGVlcCBjeWNsZSwgYW5kIGlzIGNoYXJhY3Rlcml6ZWQgYnkgZHJlYW1pbmcgc2xlZXBeW1NpZWdlbCwgSmVyb21lIE0uIOKAnFJFTSBTbGVlcDogYSBCaW9sb2dpY2FsIGFuZCBQc3ljaG9sb2dpY2FsIFBhcmFkb3gu4oCdIFNsZWVwIE1lZGljaW5lIFJldmlld3MsIFUuUy4gTmF0aW9uYWwgTGlicmFyeSBvZiBNZWRpY2luZSwgSnVuZSAyMDExLCB3d3cubmNiaS5ubG0ubmloLmdvdi9wbWMvYXJ0aWNsZXMvUE1DMzA5MTM3OC8uIF0uVG9nZXRoZXIsIHRoZXNlIGNvbnRyaWJ1dGUgdG8gdGhlIHRvdGFsIGhvdXJzIG9mIHNsZWVwIGluIG1hbW1hbHMuIA0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCkc1IDwtDQpzbGVlcCAlPiUgDQogIHBpdm90X2xvbmdlcihjb2xzID0gU2xvdy53YXZlLnNsZWVwLi5ocnMuZGF5LjpQYXJhZG94aWNhbC5zbGVlcC4uaHJzLmRheS4sIG5hbWVzX3RvID0gIkRyZWFtX1R5cGUiLCB2YWx1ZXNfdG8gPSAiSG91cnMiKSAlPiUgDQogIGdncGxvdCgpICsNCiAgZ2VvbV9jb2woYWVzKHggPSBIb3VycywgeSA9IGZjdF9yZW9yZGVyKFNwZWNpZXMub2YuYW5pbWFsLCBIb3VycyksIGZpbGwgPSBEcmVhbV9UeXBlKSkgKw0KICBsYWJzKHRpdGxlID0gIlByb3BvcnRpb24gb2YgRHJlYW1pbmcgdnMgTm9uLURyZWFtaW5nIFNsZWVwIiwNCiAgICAgICB5ID0gIiIsDQogICAgICAgeCA9ICIiLA0KICAgICAgIGZpbGwgPSAiU2xlZXAgVHlwZSIsDQogICAgICAgY2FwdGlvbiA9ICJQaXBwYSBHYWxsYWdoZXIgYW5kIEpvc2VseW4gQW5nZWxlcyIsDQogICAgICAgc3VidGl0bGUgPSAiICAgICIpICsNCiAgdGhlbWUoDQogICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDYuNSksDQogICAgcGFuZWwuZ3JpZC5tYWpvci54ID0gZWxlbWVudF9ibGFuaygpLA0KICAgIHBhbmVsLmdyaWQubWlub3IueCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICBwYW5lbC5ncmlkLm1ham9yLnkgPSBlbGVtZW50X2JsYW5rKCksDQogICAgcGFuZWwuZ3JpZC5taW5vci55ID0gZWxlbWVudF9ibGFuaygpLA0KICAgIHBsb3QudGl0bGUucG9zaXRpb24gPSAicGxvdCIsDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICIjMGEyMDNiIiksDQogICAgcGxvdC5jYXB0aW9uLnBvc2l0aW9uID0gInBsb3QiDQogICkgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLDApKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKGxhYmVscyA9IGMoIkRyZWFtaW5nIiwgIk5vbi1EcmVhbWluZyIpLCB2YWx1ZXMgPSBjKCJza3libHVlIiwiIzBhMjAzYiIpKQ0KDQpHNSAgDQpgYGANCg0KQWxsaXNvbiBhbmQgQ2ljaGV0dGkgZmluZCB0aGF0IHR5cGUgb2Ygc2xlZXAgaXMgcmVsYXRlZCBpbiBkaWZmZXJlbnQgd2F5cyB0byB0aGUgc3Vydml2YWwgb2YgbWFtbWFscy4gRm9yIGV4YW1wbGUsIHNsb3cgd2F2ZSBzbGVlcCBpcyBuZWdhdGl2ZWx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgYm9keSBzaXplIG9mIG1hbW1hbHMsIHdoaWNoIGltcGxpZXMgdGhhdCBsb25nZXIgc2xvdyB3YXZlIHNsZWVwIGN5Y2xlcyBjYW4gYmUgbW9yZSBkYW5nZXJvdXMgZm9yIGxhcmdlciBhbmltYWxzLiBIb3dldmVyLCBwYXJhZG94aWNhbCBzbGVlcCBpcyBhc3NvY2lhdGVkIHdpdGggYSBoaWdoZXIgcHJlZGF0aW9uIGluZGV4LCB3aGljaCBtZWFucyB0aGF0IGxhcmdlIGFtb3VudHMgb2YgdGhpcyBzbGVlcCBjeWNsZSBjYW4gYmUgcmlza3kgZm9yIHByZXkgc3BlY2llcy4gDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0Kc2xlZXBfZ3JhcGg8LQ0KICBzbGVlcCAlPiUgDQogIG11dGF0ZShib2R5X3d0bGJzID0gQm9keS5XZWlnaHQuLmtnLioyLjIwNDYyKSAlPiUgIA0KICBhcnJhbmdlKGRlc2MoYm9keV93dGxicykpICU+JSANCiAgZ2dwbG90KGFlcygNCiAgICB5ID0gYm9keV93dGxicywgDQogICAgeCA9IFNsb3cud2F2ZS5zbGVlcC4uaHJzLmRheS4sDQogICAgc2l6ZSA9IGJvZHlfd3RsYnMsDQogICAgYWxwaGEgPSAuNSwNCiAgICBjb2xvcj0gU3BlY2llcy5vZi5hbmltYWwpKSsNCiAgZ2VvbV9wb2ludCgpICsNCiAgbGFicyh0aXRsZSA9ICJTbG93LXdhdmUgc2xlZXAgYW5kIGJvZHkgc2l6ZSAobGJzKSIsDQogICAgICAgeCA9ICIiLA0KICAgICAgIHkgPSAiIikgKw0KICB0aGVtZShwbG90LnRpdGxlLnBvc2l0aW9uID0gInBsb3QiLA0KICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiTm9uZSIpIA0KDQpnZ3Bsb3RseShzbGVlcF9ncmFwaCkgJT4lIA0KICBoaWRlX2xlZ2VuZCgpIA0KDQoNCg0KDQpgYGANCg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCkc3IDwtDQogIHNsZWVwICU+JSANCiAgZmlsdGVyKFNwZWNpZXMub2YuYW5pbWFsICVpbiUgYygiSG9yc2UiLCAiQ293IiwgIlBpZyIsICJIdW1hbiIsICJTaGVlcCIsICJDaGltcGFuemVlIiwgIkdvYXQiLCAiQmFib29uIiwgIlJlZCBmb3giLCAiQ2F0IiwgIlJhYmJpdCIsICJSYXQiLCAiR3JvdW5kIHNxdWlycmVsIiwgIk1vdXNlIikpICU+JSANCiAgc2VsZWN0KFNwZWNpZXMub2YuYW5pbWFsLFBhcmFkb3hpY2FsLnNsZWVwLi5ocnMuZGF5LiAsU2xlZXAuZXhwb3N1cmUuaW5kZXgpICU+JSANCiAgZ2dwbG90KCkgKw0KICBnZW9tX2NvbChhZXMoeSA9IFBhcmFkb3hpY2FsLnNsZWVwLi5ocnMuZGF5LiwgDQogICAgICAgICAgICAgICB4ID0gZmN0X3Jlb3JkZXIoU3BlY2llcy5vZi5hbmltYWwsUGFyYWRveGljYWwuc2xlZXAuLmhycy5kYXkuLG1lZGlhbiksDQogICAgICAgICAgICAgICBmaWxsID0gU2xlZXAuZXhwb3N1cmUuaW5kZXgpKSArDQogIGdlb21fdGV4dChhZXMoeSA9IFBhcmFkb3hpY2FsLnNsZWVwLi5ocnMuZGF5LiArIDIsIHg9ZmN0X3Jlb3JkZXIoU3BlY2llcy5vZi5hbmltYWwsUGFyYWRveGljYWwuc2xlZXAuLmhycy5kYXkuLG1lZGlhbiksIGxhYmVsPSBTcGVjaWVzLm9mLmFuaW1hbCksIGNvbG9yPSJ3aGl0ZSIsIGZvbnRmYWNlPSJib2xkIixhbHBoYT0wLjYsIHNpemU9Mi41LCBpbmhlcml0LmFlcyA9IEZBTFNFICkgKw0KICBsYWJzKHRpdGxlID0gIkRyZWFtaW5nIEhvdXJzIG9mIFNsZWVwIHBlciBEYXkiLA0KICAgICAgIGNhcHRpb24gPSAiUGlwcGEgR2FsbGFnaGVyIGFuZCBKb3NlbHluIEFuZ2VsZXMiLA0KICAgICAgIHN1YnRpdGxlID0gIlRoaXMgbWVhc3VyZXMgdGhlIG51bWJlciBvZiBob3VycyBvZiBwYXJhZG94aWNhbCAoZHJlYW1pbmcpIHNsZWVwIGVhY2ggbWFtbWFsLCBvbiBhdmVyZ2FlLCBoYXMgZWFjaCBuaWdodC5cblRoZSBTbGVlcCBNZWFzdXJlIEluZGV4IGRldGVybWluZXMgaG93IHZ1bG5lcmFibGUgdGhlIG1hbW1hbCBpcyB3aGVuIHNsZWVwaW5nLCB3aXRoIDEgYmVpbmcgdGhlIGxlYXN0IHZ1bG5lcmJhbGVcbmFuZCA1IHRoZSBtb3N0LiIsDQogICAgICAgeSA9ICIiLA0KICAgICAgIHggPSAiIiwNCiAgICAgICBmaWxsID0gIlNsZWVwIEV4cG9zdXJlIEluZGV4IikgKw0KICBjb29yZF9wb2xhcihzdGFydCA9IDApICsNCiAgeWxpbSgtMS41LDYpICsNCiAgICAgdGhlbWUoDQogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCksDQogICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjMGEyMDNiIiksDQogICAgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiMwYTIwM2IiKSwNCiAgICBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiMwYTIwM2IiKSwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIndoaXRlIiksDQogICAgcGxvdC50aXRsZS5wb3NpdGlvbiA9ICJwbG90IiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIpLA0KICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIpLA0KICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIndoaXRlIiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIndoaXRlIiksDQogICAgcGxvdC5jYXB0aW9uLnBvc2l0aW9uID0gInBsb3QiLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiLCBzaXplID0gNykpICsNCiAgc2NhbGVfZmlsbF9ncmFkaWVudChoaWdoID0gIiMyNDczZGIiLCBsb3cgPSAiI2MzZGVmZiIpDQoNCkc3DQoNCmBgYA0KDQoNClVsdGltYXRlbHksIHRoZWlyIGZpbmRpbmdzIG91dGxpbmUgdGhlIGRpbWVuc2lvbnMgb2Ygc3Vydml2YWwgd2hpbGUgbWFtbWFscyBzbGVlcCwgaGlnaGxpZ2h0aW5nIHRoZSB2YXJpb3VzIGZhY3RvcnMgdGhhdCBlbmRhbmdlciBhbmltYWxzIGluIG1vbWVudHMgb2YgcmVzdCwgYW5kIGhvdyB0aGVpciBwaHlzaWNhbCBhbmQgcGh5c2lvbG9naWNhbCBjb25kaXRpb25zIHJlc3BvbmQgdG8gdGhlc2UgZGFuZ2Vycy4NCg0KDQoNCg0KDQoNCg0KDQoNCg==